package pruebas;

import modelo.*;
import modelo.moviles.exceptions.ArsenalSinArmas;
import modelo.moviles.balas.Bala;
import modelo.moviles.naves.Algo42;
import junit.framework.TestCase;
public class TestGeneral extends TestCase{

	/* "Testeamos la aplicacion." */
	public void testGeneral(){

		Nivel nivel = new Nivel(20,20);
		Algo42 algo42 = new Algo42 (nivel);
		nivel.crearFlota();

		int chequeoLoopInfinito =1;
		int proximoMovimiento;
		while ((!nivel.fueGanado()) && (!nivel.fuePerdido()) && (chequeoLoopInfinito < 10)){
			chequeoLoopInfinito ++ ;
			/* muevo el Algo42 */
			proximoMovimiento = ((int)  Math.floor(Math.random() * 4));
			algo42.moverAlgo42(proximoMovimiento);
			
			/* "Disparo una bala de Algo42 " */
			if (algo42.puedeDisparar() ) {
				try {
					Bala bala = algo42.disparar();	
				} catch (ArsenalSinArmas expected) {
					fail("Se quedo sin balas cuando no debia");
				}
			}
			
			nivel.seguirViviendo();
		
		}
	
		assertFalse("Ganaste el nivel",nivel.fueGanado());
		assertFalse("Perdiste el nivel",nivel.fuePerdido());
		assertFalse("Ganaste el nivel",nivel.fueGanado());
		assertEquals("Algo mataste, se termino el juego",nivel.getPuntaje(),0);
		
	}
}